Occasionally-connected computing interface

ABSTRACT

Described are computer-based methods and apparatuses, including computer program products, for allowing a user to switch between interfacing with a service through a network or through short message service (SMS). A chat service is executed through which a first user at a first computer can communicate directly with a second user at a second computer. A request is received from the first computer to enable the first user to interface with the chat service through a mobile device of the first user using SMS instead of through the network using the first computer. The chat service is configured to interface with the mobile device through SMS, including communicating chat information through SMS to the first user&#39;s mobile device, and communicating control information through SMS to the first user&#39;s mobile device such that the first user can control a full functionality of the chat service using SMS.

CROSSED-REFERENCES RELATED APPLICATIONS

This application is a continuation of U.S. Ser. No. 14/322,736, filed Jul. 2, 2014, which is a continuation of U.S. Ser. No. 13/413,197, filed Mar. 6, 2012, now U.S. Pat. No. 8,805,941, issued Aug. 12, 2014 the disclosures of each of which are incorporated herein by reference in its entirety for all purposes.

TECHNICAL FIELD

Various exemplary embodiments disclosed herein relate generally to computer-based methods and apparatuses, including computer program products, for an occasionally-connected computing interface.

BACKGROUND

Companies can use servers to provide services to remote computers (e.g., online services) through interfaces on the remote computers. For example, a user can access the services by loading a webpage on a local computer that interfaces with the servers. The webpage can include a number of controls, such as buttons, widgets, menu items, etc. that allow the user to access and interact with the remotely-located server(s) to access the full-range of services provided by the servers. As another example, the user can access the services by loading a program or other executable on the user's computer that is configured to interact with the services provided by the remotely-located servers. The executable can be similar to the webpage—the executable generates a graphical user interface (GUI) with various controls that allow the user to invoke the features of the service provided by the remote servers.

With the explosion of smart phones, personal digital assistants, tablets, and other mobile devices, the processing and display capabilities of these devices are often powerful enough to run similar executables on the mobile devices that can interface with the remote servers. However, such programs or executables often consume a large amount of the mobile device's processing power, memory, etc., causing the mobile device's performance to decrease. Further, many of these programs can not be run on earlier-model mobile devices, which do not have sufficient processing power.

SUMMARY

The computerized methods and apparatus disclosed herein allow a user to invoke the full functionality of a service (e.g., that which is often utilized using a graphical interface at the user's computer, including various buttons, menu items, etc.) using a mobile device's messaging service (e.g., MMS, SMS). The user can further seamlessly switch between using the mobile device and the user's computer to interact with the service, without any impact on the user's session with the service and/or sessions with other remote computers (e.g., existing online chat sessions between the user, whether established through the user's mobile phone or computer, and the remote computers).

In one embodiment, a computerized method is featured. The computerized method allows a user to switch between interfacing with a service through a network or through short message service (SMS). The method includes executing, by a server computer, a chat service through which a first user at a first computer can communicate directly with a second user at a second computer, both the first computer and the second computer communicating with the chat service through a network. The method includes receiving from the first computer, by the server computer, a request to enable the first user to interface with the chat service through a mobile device of the first user using short message service (SMS) instead of through the network using the first computer. The method includes configuring, by the server computer, the chat service to interface with the mobile device through SMS, including (a) communicating chat information through SMS to the first user's mobile device and communicating chat information through the network to the second computer such that the second user is unaware the first user switched to using the mobile device instead of the first computer, and (b) communicating control information through SMS to the first user's mobile device such that the first user can control a full functionality of the chat service using SMS.

In another embodiment, a computer program product, tangibly embodied in a non-transitory computer-readable medium is featured. The computer program product includes instructions being configured to cause a data-processing apparatus to execute a chat service through which a first user at a first computer can communicate directly with a second user at a second computer, both the first computer and the second computer communicating with the chat service through a network. The computer program product includes instructions being configured to cause a data-processing apparatus to receive from the first computer a request to enable the first user to interface with the chat service through a mobile device of the first user using short message service (SMS) instead of through the network using the first computer. The computer program product includes instructions being configured to cause a data-processing apparatus to configure the chat service to interface with the mobile device through SMS, including (a) communicating chat information through SMS to the first user's mobile device and communicating chat information through the network to the second computer such that the second user is unaware the first user switched to using the mobile device instead of the first computer, and (b) communicating control information through SMS to the first user's mobile device such that the first user can control a full functionality of the chat service using SMS.

In another embodiment, a server computer is featured. The server computer allows a user to switch between interfacing with a service through a network or through short message service (SMS). The server computer includes a processor and memory. The server computer is configured to execute a chat service through which a first user at a first computer can communicate directly with a second user at a second computer, both the first computer and the second computer communicating with the chat service through a network. The server computer is configured to receive from the first computer a request to enable the first user to interface with the chat service through a mobile device of the first user using short message service (SMS) instead of through the network using the first computer. The server computer is configured to configure the chat service to interface with the mobile device through SMS, including (a) communicating chat information through SMS to the first user's mobile device and communicating chat information through the network to the second computer such that the second user is unaware the first user switched to using the mobile device instead of the first computer, and (b) communicating control information through SMS to the first user's mobile device such that the first user can control a full functionality of the chat service using SMS.

In other examples, any of the aspects above can include one or more of the following features. A request can be received from the first user's mobile device to interface with the chat service at a third computer instead of the mobile device, and the chat service can be configured to interface with the third computer. Configuring can include (a) communicating chat information through the network to the third computer and communicating chat information through the network to the second computer such that the second user is unaware that the first user switched to using the third computer instead of the mobile device, and (b) communicating control information through the network to the third computer such that the first user can use the full functionality of the chat service using the network.

In some examples, configuring the chat service to interface with the first user includes maintaining any chat sessions between the first user and the second user, any other users, or any combination thereof. Receiving the request can include receiving a request from the first user to change a status of the first user from online mode to mobile mode. All communications can be sent to the first user's mobile device using SMS.

In other examples, an SMS request is received from the first user's mobile device to start a chat conversation with a third user at a third computer, and chat information is communicated through SMS to the first user's mobile device and communicating chat information to the third computer. Communicating chat information through SMS to the first computer can include receiving a chat message from the second computer, and transmitting, using SMS, the chat message, and a chat identifier to the first user's mobile device.

The techniques, which include both methods and apparatuses, described herein can provide one or more of the following advantages. A service (e.g., provided by a server) can be accessed by a broad range of devices and communication protocols, including a mobile phone's messaging service. The user of the service can seamlessly switch between devices while interacting with the service, giving the user a greater flexibility to stay connected to the service using different devices and communication protocols. Additionally, by using a messaging service on the mobile device instead of a stand-alone application or executable, the user can continue using the full-range of services without bogging down the resources of the mobile device.

Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating the principles of the invention by way of example only.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing and other aspects, features, and advantages will be more fully understood from the following description of various embodiments, when read together with the accompanying drawings.

FIG. 1 illustrates an exemplary system for supporting an occasionally-connected computing interface;

FIG. 2 illustrates an exemplary computerized method for allowing a user to switch between interfacing with a service through a networked device or a mobile device using the mobile device's message service;

FIG. 3 illustrates an exemplary computerized method for allowing a user to switch between interfacing with a service through a networked device or a mobile device using the mobile device's message service; and

FIG. 4 illustrates an exemplary diagram of an agent console for accessing services provided by a remote server.

DETAILED DESCRIPTION

Referring now to the drawings, in which like numerals refer to like components or steps, there are disclosed broad aspects of various exemplary embodiments.

In general overview, computerized systems and methods are provided for allowing a user to switch between interfacing with a service (e.g., a service provided by a remotely-located server) through a device networked to the service (e.g., a desktop, personal computer, laptop, etc. connected to the server via the internet or other type of network) or a mobile device using the mobile device's message service (e.g., short messaging service, blackberry messaging service, etc.). Further, the user can access the full range of services provided by the remote computer using the mobile device's messaging service.

While various examples described herein use the term “agent,” the term is intended to be used broadly and should be understood to refer to a user of the services (e.g., provided by a remote server). Therefore, the phase “occasionally-connected user interface” addresses an interface that allows a user of a service to interface with the service using various devices (e.g., the agent can connect to the services using his desktop, mobile phone, and/or other devices via different communication interfaces).

FIG. 1 illustrates an exemplary system 100 for supporting an occasionally-connected user interface. The system 100 includes multiple components connected through the network 103. The system 100 includes a communication server 101, a visitor's computer 110, an agent computer 120, a mobile device 130, an SMS gateway 131, and an agent console 140. The visitor's computer 110 can include a (visitor's) web browser 111 and a tag module 113. The agent computer 120 can similarly include a(n agent) web browser 121. The browser 121 can display the agent console 140, which can include an interface 141 that provides a set of features to the agent.

The communication server 101 provides a number of services to remote users (e.g., agent computer 120, via the agent console 140, mobile device 130, etc.). The agent can interact with the services to establish communications with the visitor computer 110 (and/or other visitors, not shown). For example, the communication server 101 can initiate a connection between an agent (e.g., using the agent computer 120) and a website visitor (e.g., using the visitor computer 110) through the network 103. For example, the communication server 101 can initiate an online chat session between the visitor computer 110 and either the mobile device 130 (used by the agent) or the agent computer 120 (used by the agent). Over the course of the chat session, the agent can seamlessly switch, via the communication server 101, which device the agent is using to communicate with the visitor computer (e.g., switch from using the agent computer 120 to chat with the visitor computer 110, to using the mobile device 130) such that the visitor does not detect the agent's change of device (e.g., as indicated with dotted line 150).

Communication server 101 can be, for example, a single web server with a processor and memory. In some embodiments, the communication server 101 can include multiple web servers connected directly or through the network 103. The communication server 101 can be configured to provide a number of services to users (e.g., to agent computer 120 and/or other agent computers, not shown). The services can include, for example, services that allow the agent to provide customer service, help, and/or recommendations to the visitors (e.g., visitors to a website) and to manage the associated connections with visitors. For example, the communication server 101 can establish a communication between the visitor computer 110 and the agent computer 120. For example, the communication server 101 can establish an online chat help session between the agent computer 120 and the visitor computer 110 (e.g., in response to a visitor clicking a chat button on a web page displayed in the visitor browser 111, automatically based on predetermined criteria configured in the tag module 113, etc.).

The communication server 101 can be configured to provide certain functionality to the agent through the agent console 140 via the set of features 141. For example, if an agent types a message using the agent console 140 to send to a visitor, the communication server 101 can process the agent's actions and transmit the message to the visitor (e.g., via a an online chat session established by the communication server 101). The agent console 140 is described in further detail below. The communication server 101 is further configured to provide the same functionality to the agent through the agent's mobile device using a messaging service.

Network 103 can be, for example, a packet-switching network that is able to forward packets to other devices based on information included in the packet. The network 103 can provide, for example, phone and/or Internet service to various devices, like the user device 101 and the agent computer 120 in communication with the network 103.

The visitor computer 110 can be a personal computer (e.g., a PC or a laptop) including a processor and memory. In some examples, the visitor computer 110 is a smart phone, a personal digital assistant, a tablet PC, and/or any another computing device capable of interacting with the communication server 101. In some examples, the visitor computer 110 is a computing device capable of viewing web content using a web browser (e.g., the visitor browser 111). The web content can be served by one or more web content servers (not shown). The web content can cause the tag module 113 to be loaded in the visitor browser 111, as is described, for example, in U.S. patent application Ser. No. 13/080,324, entitled “System and Method for Dynamically Enabling Customized Web Content and Applications,” which is hereby incorporated by reference herein in its entirety.

Agent computer 120 can be a personal computer with a processor and memory that is sufficient to execute the agent console 140 (e.g., through the agent browser 121 as a web application, or as a stand-alone application on the agent computer 120). Mobile device 130 can be, for example, a phone, tablet, or similar portable device that is able to send and receive messages. In some embodiments, the mobile device 130 is a device capable of sending and receiving text messages through a messaging service, such as the short messaging service (SMS).

The agent console 140 is, for example, an interface that allows the agent (using the agent computer 120) to perform various functions by accessing services provided by the communication server 101. These functions can be related to interacting with visitors. For example, the functions can include (i) monitoring a number of visitors (e.g., visitors to a website) that have requested assistance from agents (and the status thereof, such as chatting, waiting for chat, etc.), (ii) chatting with a particular visitor, (iii) placing an outbound call to the visitor, (iv) emailing with a visitor, (v) drafting notes (e.g., to associate with a visitor (such as notes about a chat or call) or for the agent's use), (vi) viewing alerts presented to the visitor (e.g., pop-up ads, invitations for online chat, etc.), (vii) controlling a ticket associated with a visitor (e.g., to track the progress of agent interaction with a visitor), (viii) viewing the web history of the visitor, and/or the like.

FIG. 4 shows an example of an agent console 400. The agent console 400 includes a menu bar 402, an action bar 404, a visitor list 406, an interaction portion 408, and an information portion 410. The visitor list 406 provides information for visitors (e.g., that are in-line to interact with an agent, or being assisted by an agent), including their country, contact ID, ticket ID, skill, state, operator, current web page, subject, time in the website, and duration of the interaction with an agent). An agent can select a particular visitor in the visitor list, as shown by the highlighted visitor 412 with a contact ID “Robyn MacNab.” Once selected, the interaction portion 408 and information portion 410 are populated with information for the visitor 412, as shown in the agent console 400.

The interaction portion 408 includes a chat function 414 that allows the agent to chat with the selected visitor (e.g., as shown in the chat console 414A), a phone function 416 that allows the agent to call the visitor, an email function 418 that allows the agent to email with the visitor, a note function 420 that allows the agent to take notes, and a log call function 422 that allows the agent to log information about a call (e.g., made with the phone function 416). The information portion 410 includes various tabs that provide information about a selected visitor, including alerts, InteliResponse, Info, Navigation, Page Viewer, and Knowledgebase Monitor. For example, the information tab 410A shows various information for the selected visitor Robyn MacNab 412. Agent console 400 is an illustrative example of an agent console, and one of skill in the art can appreciate that different features can be included and/or excluded from the agent console without departing from the spirit of the invention.

The system 100 is an example of a computerized system that is specially configured to perform the computerized methods described herein. However, the system structure and content recited with regard to FIG. 1 are for exemplary purposes only and are not intended to limit other examples to the specific structure shown in FIG. 1. As will be apparent to one of ordinary skill in the art, many variant system structures can be architected without departing from the computerized systems and methods described herein.

In addition, information may flow between the elements, components and subsystems described herein using any technique. Such techniques include, for example, passing the information over the network using standard protocols, such as TCP/IP, passing the information between modules in memory and passing the information by writing to a file, database, or some other non-volatile storage device. In addition, pointers or other references to information may be transmitted and received in place of, or in addition to, copies of the information. Conversely, the information may be exchanged in place of, or in addition to, pointers or other references to the information. Other techniques and protocols for communicating information may be used without departing from the scope of the invention.

FIG. 2 illustrates an exemplary computerized method 200 for allowing a user (e.g., an agent) to switch between interfacing with a service (e.g., provided by the communication server 101) through a network (e.g., over the network 103 via the agent console 140) or message service (e.g., via mobile device 130). Referring to FIG. 1, the communication server 101 can execute method 200 to switch devices when supporting a communication between the agent (e.g., the agent via the agent console 140 on agent computer 120) and the visitor's computer 110. Method 200 starts at step 201 and proceeds to step 203, where the communication server 101 initiates a communication (e.g., a chat session) between the agent and the customer. At step 205, the communication server 101 receives (e.g., from the agent console 140) a request to transfer the agent from using the agent console 140 to communicate with the visitor, to using a mobile device 130 to communicate with the visitor (e.g., such that the user can invoke the functionality of the agent console 140 using the mobile device). At step 207, the communication server 101 configures the communication service(s) to interface with the mobile device through a messaging service, such that the agent can invoke functionality of the agent console (e.g., the same functionality provided through the agent console 140). At step 209, the communication server 101 communicates agent console information to the agent's mobile device through the messaging service.

While method 200 is described with step 203, the agent need not have a communication initiated between the agent and a customer to switch the agent's device (e.g., as described with reference to steps 205-209). Referring to step 203, for example, the communication server 101 can set up an online chat between the agent computer 120 and the visitor at the visitor computer 110. The communication server 101 can set up the chat session such that both the agent computer 120 and the visitor computer 110 communicate through the network 103. For example, the communication server 101 can provide a chat window to the visitor through the visitor browser 111 for the visitor to participate in the chat session. The agent can use the agent console 140 to participate in the chat session (e.g., using the chat function 414 of the agent console 400 shown in FIG. 4).

Referring to step 205, the agent can indicate (e.g., via the agent console 140) that the agent would like to switch to interacting with the agent console functionality through mobile device 130 instead of through the agent computer 120. For example, the communication server 101 receives, from the agent computer 120 (e.g., via user selection of a function on the agent console 140), a request to enable the agent to interface with the services provided by the communication server 101 through the mobile device 130 (e.g., using short message service (SMS)) instead of through the agent computer 120 (e.g., using the agent console 140).

For example, the communication server 101 can receive a request from the agent console 140 to change a status of the agent using the agent computer 120 from “online” mode (e.g., connected to the communication server 101 via a computer network) to “mobile” mode (e.g., connected to the communication server 101 via a network that includes telephone components, such as SMS gateway 131). The communication server 101 can allow the user to access the agent console functionality (e.g., as provided by the communication server 101) through SMS messaging (e.g., for both messages being sent to the communication server 101 and transmitted from the communication server 101 to the mobile device 130).

In some embodiments, the communication server 101 can receive the request from the agent computer 120. In such examples, the communication server 101 can first suspend messages from being sent to the agent computer 120 before proceeding to step 207. In some embodiments, the communication server 101 receives the transfer request from the mobile device 130 (e.g., as is described below with respect to FIG. 3). In such examples, the communication server 101 can proceed directly to step 207.

The agent can request the transfer using the agent console 140. For example, the agent can change a status associated with the agent from “online” to “mobile” to switch to using the mobile device 130. In response, the communication server 101 can switch to interacting with the mobile device 130 via SMS (e.g., all communications, such as chat messages and control information, are transmitted to the mobile device 130 via SMS). If, for example, the agent has incoming chats, the communication server 101 can support multiple chats via SMS capabilities.

Referring to step 207, the communication server 101 configures the services it is providing to interface with the agent via the mobile device 130. In some examples, the communication server 101 includes an application programmer interface (API) that is used to invoke the services provided by the communication server 101. The communication server 101 can configure the API, if necessary, to interface with the mobile device 130 instead of the agent console 140.

In some examples, the communication server 130 interfaces with the mobile device 130 through SMS. For example, when the communication server 101 receives the transfer request in step 205, the communication server 101 can establish a connection between the visitor's computer 110 and the mobile device 130 via the SMS gateway 131.

By using SMS instead of a stand-alone application or program allows the user to continue using the full-range of services provided by the communication server 130 without bogging down the resources of the mobile device 130. While some examples herein describe using SMS as the messaging service, other messaging services can also be used. For example, depending on the type of mobile device 130 used (e.g., iPhone, iPad, Blackberry, Android) the communication server 101 can transmit messages using the specific messaging service employed by the mobile device 130. For example, the messaging can be performed using Java, Blackberry Messenger (BBM), multimedia messaging service (MMS), and/or other services that do not require running a separate program or executable on the mobile device 130.

The information the communication server 101 transmits to the mobile device 130 can include identifiers for the information. The identifiers can allow the agent to understand the meaning of the information as it relates to services provided by the communication server 101 (e.g., whether the information relates to chat, relates to control functions, etc.). For example, for chat sessions, each message can be prefixed with the chat number (e.g., “chat 1”, “chat 2”, etc.), a chat name (e.g., “Robyn MacNab” as shown in FIG. 4), or other identifier. The identifiers can allow the agent to distinguish between different chats, and to identify the chats when switching back to using the agent computer 120. Similarly, messages transmitted from the mobile phone 130 to the communication server 101 can include an identifier that the communication server 101 uses to process the messages. The identifiers can be used so the mobile phone 130 can use the full range of services offered by the communication server 101 (e.g., as if using the agent console 140) from the mobile device 130. For example, functions the agent can use via the mobile device 130 (e.g., via messaging without installing a stand-alone application) include searching for a visitor, sending a chat invites to a visitor (e.g., while the visitor is on a website), requesting and receiving a real-time administrative report about the agent's account with the communication server (e.g., to get information such as that shown in the visitor list 406, such as which chat sessions are available and which agent(s) are interacting with visitors), and/or other functionality (e.g., such as that which can be utilized through the agent console 400).

Referring to step 209, the communication server 101 communicates agent console information to the agent's mobile device 130 through the messaging service. The information can include, for example chat information. The communication server 101 can perform step 207 such that step 209 occurs without any impact on the visitor. For example, the communication server 101 can transition to communicating with the agent's mobile device 130 through SMS while still communicating information (e.g., chat information) through the network 100 to the visitor computer 110 such that the visitor is unaware the agent switched to using the mobile device 130 instead of the agent computer 120.

The information can include control information. For example, the communication server 101 can communicate control information through SMS to the mobile device 130 such that the agent can use the full functionality provided by the communication server 101 (e.g., that explained with reference to the agent console 400 FIG. 4) using SMS. For example, the control information can allow the agent to (i) monitor visitors (e.g., visitors to a website), (ii) establish a chat with a particular visitor, (iii) place an outbound call to the visitor, (iv) email with a visitor, (v) draft notes, (vi) view alerts presented to the visitor, (vii) control a ticket associated with a visitor, (viii) viewing the web history of the visitor, and/or other functions (e.g., as described with reference to FIG. 4).

For example, the agent can start a new online chat with a new visitor via the agent's mobile device 130. Using SMS for this example, the communication server 101 receives an SMS request from the agent's mobile device 130 to start a chat conversation with the new user (e.g., using a second visitor computer (not shown). The communication server 101 can communicating chat information through SMS to the agent's mobile device 130 and communicate chat information to the visitor computer 110. For example, the communication server 101 can receive a chat message from the visitor computer 110 with a destination address being that of the agent. The communication server 101 can determine that the agent is using the mobile device 130, and transmit, using SMS, the chat message, and a chat identifier to the first user's mobile device. The agent can use the chat identifier to know which visitor transmitted the chat message. The communication server 101 can receive both chat messages sent from the mobile device 130, as well as control messages from the mobile device 130 (e.g., via the gateway 131) in order to provide the agent full functionality of the agent console from the mobile device 130.

FIG. 3 illustrates an exemplary computerized method 300 for allowing a user to switch between interfacing with a service through a network or message service. Referring to FIG. 1, method 300 starts at step 301 and proceeds to step 303, where the communication server 101 initiates a communication (e.g., a chat service) between the agent's mobile device 130 and the visitor computer 110. For example, the communication server 101 can initiate a chat session by invoking a chat service on both the mobile device 130 (e.g., via SMS) that is controlled by the agent and the visitor's computer 110 (e.g., via a graphical chat window).

At step 305, the communication server 101 receives a request to transfer the agent's interaction with the agent console functionality from the mobile device 130 (e.g., via SMS messaging) to the agent computer 120 (or another computer, not shown). For example, if the agent is communicating with the visitor via online chat, the communication server 101 can receive a request from the agent's mobile device 130 to maintain the chat service with the visitor, but to interface with the chat service at the agent computer 120 instead of the mobile device 130.

At step 307, the communication server 101 configures the services to interface with the agent at the agent computer 120. For example, to maintain an existing chat with the visitor computer 110 during the transfer, the communication server 101 can configure the chat service to interface with the agent console 104 being executed on the agent computer 120 (e.g., via the chat console 414A of FIG. 4). The communication server 101 can communicate chat information through the network 103 to the agent computer 120 and communicate chat information through the network 103 to the visitor computer 110 such that the visitor is unaware that the agent switched to using the agent computer 120 instead of the mobile device 130 (e.g., the visitor does not have any concept of what device the agent is using to communicate with the visitor). The communication server 101 can communicate control through the network 103 to the agent computer such that the first user can use the full functionality of the chat service using the network.

The communication server 101 can allow the agent to interface with the services provided by the communication server 101 while preserving any settings, communications, etc. that the agent has configured via one or more devices. For example, if a user invokes a first setting while using the mobile device 130, and then invokes a second setting after switching to the agent computer 120, the agent still has the first setting configured by the mobile device 130. Additionally, the communication server 101 can maintain any communications between the agent and third parties (e.g., the visitor computer 110 and/or any other computers). For example, the communication server 101 can maintain any existing chat sessions between the agent and the visitor computer 110 and/or any other users.

Allowing the agent to interface with the agent console functionality through the mobile device 130 using a messaging service can increase performance of the mobile device 130. For example, requiring the mobile device 130 to run an application (e.g., as an app for an iPhone, which controls and manages all the calls to the communication server 101 (e.g., in order to receive notifications and incoming chat)) instead of using a messaging service (e.g., SMS) would consume a lot of the mobile phone's resources. The communication server 101 can provide access to the full agent console functionality via messaging, which does not consume much resources of the mobile device 130.

As an illustrative example, assume the agent is a car dealer, and the agent is in his office chatting with potential customers online. Then the car dealer notices a person browsing the vehicles in his lot, and needs to leave his computer to assist the customer. To maintain the chats with the online customers, the car dealer sets his profile to “mobile,” (e.g., using the agent console 400 of FIG. 4) and enters his phone number as a mobile address at which to communicate with the car dealer. Once the car dealer adjusts his profile, he can go out to his lot and get SMS notification(s) for any incoming chat(s), and/or use SMS messages to control other aspects of the service. If, for example, the SMS notification is a request to chat with a new customer that the car dealer was not already chatting with, the car dealer can reply via SMS to take the new conversation. The chat console 101 then sends the agent's mobile device the chat (e.g., “Good afternoon, can I get pricing on a new Toyota?”). If the car dealer finishes helping the customer on the lot, the car dealer can go back inside to his desktop, and continue his chat(s) from his desktop. Thus, SMS on the mobile phone operates like a “light” console to the services provided by the communication server 101. It doesn't take any resources of your mobile device, but keeps you updated and connected always.

The above-described techniques can be implemented in digital and/or analog electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The implementation can be as a computer program product, i.e., a computer program tangibly embodied in a machine-readable storage device, for execution by, or to control the operation of, a data processing apparatus, e.g., a programmable processor, a computer, and/or multiple computers. A computer program can be written in any form of computer or programming language, including source code, compiled code, interpreted code and/or machine code, and the computer program can be deployed in any form, including as a stand-alone program or as a subroutine, element, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one or more sites.

Method steps can be performed by one or more processors executing a computer program to perform functions of the invention by operating on input data and/or generating output data. Method steps can also be performed by, and an apparatus can be implemented as, special purpose logic circuitry, e.g., a FPGA (field programmable gate array), a FPAA (field-programmable analog array), a CPLD (complex programmable logic device), a PSoC (Programmable System-on-Chip), ASIP (application-specific instruction-set processor), or an ASIC (application-specific integrated circuit). Subroutines can refer to portions of the computer program and/or the processor/special circuitry that implement one or more functions.

Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital or analog computer. Generally, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and/or data. Memory devices, such as a cache, can be used to temporarily store data. Memory devices can also be used for long-term data storage. Generally, a computer also includes, or is operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. A computer can also be operatively coupled to a communications network in order to receive instructions and/or data from the network and/or to transfer instructions and/or data to the network. Computer-readable storage devices suitable for embodying computer program instructions and data include all forms of volatile and non-volatile memory, including by way of example semiconductor memory devices, e.g., DRAM, SRAM, EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and optical disks, e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memory can be supplemented by and/or incorporated in special purpose logic circuitry.

To provide for interaction with a user, the above described techniques can be implemented on a computer in communication with a display device, e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse, a trackball, a touchpad, or a motion sensor, by which the user can provide input to the computer (e.g., interact with a user interface element). Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, and/or tactile input.

The above described techniques can be implemented in a distributed computing system that includes a back-end component. The back-end component can, for example, be a data server, a middleware component, and/or an application server. The above described techniques can be implemented in a distributed computing system that includes a front-end component. The front-end component can, for example, be a client computer having a graphical user interface, a Web browser through which a user can interact with an example implementation, and/or other graphical user interfaces for a transmitting device. The above described techniques can be implemented in a distributed computing system that includes any combination of such back-end, middleware, or front-end components.

The computing system can include clients and servers. A client and a server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

The components of the computing system can be interconnected by any form or medium of digital or analog data communication (e.g., a communication network). Examples of communication networks include circuit-based and packet-based networks. Packet-based networks can include, for example, the Internet, a carrier internet protocol (IP) network (e.g., local area network (LAN), wide area network (WAN), campus area network (CAN), metropolitan area network (MAN), home area network (HAN)), a private IP network, an IP private branch exchange (IPBX), a wireless network (e.g., radio access network (RAN), 802.11 network, 802.16 network, general packet radio service (GPRS) network, HiperLAN), and/or other packet-based networks. Circuit-based networks can include, for example, the public switched telephone network (PSTN), a private branch exchange (PBX), a wireless network (e.g., RAN, bluetooth, code-division multiple access (CDMA) network, time division multiple access (TDMA) network, global system for mobile communications (GSM) network), and/or other circuit-based networks.

Devices of the computing system and/or computing devices can include, for example, a computer, a computer with a browser device, a telephone, an IP phone, a mobile device (e.g., cellular phone, personal digital assistant (PDA) device, laptop computer, electronic mail device), a server, a rack with one or more processing cards, special purpose circuitry, and/or other communication devices. The browser device includes, for example, a computer (e.g., desktop computer, laptop computer) with a world wide web browser (e.g., Microsoft® Internet Explorer® available from Microsoft Corporation, Mozilla® Firefox available from Mozilla Corporation). A mobile computing device includes, for example, a Blackberry®. IP phones include, for example, a Cisco® Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco® Unified Wireless Phone 7920 available from Cisco System, Inc.

One skilled in the art will realize the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The foregoing embodiments are therefore to be considered in all respects illustrative rather than limiting of the invention described herein. Scope of the invention is thus indicated by the appended claims, rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein. 

The invention claimed is:
 1. A computer-implemented method, comprising: transmitting, by a server, interface data, wherein when the interface data is received at an agent device, the interface data causes the agent device to display an agent interface, and wherein the agent interface is associated with a set of executable functions corresponding to one or more available interactions between the agent device and a customer device; receiving a conversation activation request, wherein the conversation activation request initiates a communication session between the agent device and a customer device; facilitating the communication session between the agent device and the customer device, wherein the communication session includes control information, and wherein the communication session includes messaging information associated with a messaging service; receiving a transfer request, wherein the transfer request identifies a mobile agent device associated with the agent device, wherein the transfer request includes a request to enable the set of executable functions associated with the agent interface, through the mobile agent device; and transmitting the interface data, wherein transmitting the interface data is based upon the control information and the messaging information, and wherein when the interface data is received at the mobile agent device, the set of executable functions associated with the agent interface is available for execution at the mobile agent device.
 2. The computer-implemented method of claim 1, wherein when the interface data includes the control information, the control information causes execution of a function of the set of executable functions.
 3. The computer-implemented method of claim 1, wherein the control information includes an identifier that corresponds to a function of the set of executable functions, and wherein when the control information is received at the server, the identifier is used to identify and execute a function.
 4. The computer-implemented method of claim 1, wherein agent console information is transmitted to the mobile agent device using the messaging service, and wherein the agent console information enables the set of executable functions to be executed at the mobile agent device.
 5. The computer-implemented method of claim 1, further comprising: receiving the control information, wherein when the control information is received from the mobile agent device, determining a function of the set of executable functions for execution based on the control information, wherein determining the function includes extracting an identifier included in the control information, and wherein the identifier corresponds to the function.
 6. A system, comprising: one or more data processors; and a non-transitory computer-readable storage medium containing instructions which, when executed on the one or more data processors, cause the one or more data processors to perform operations including: transmitting, by a server, interface data, wherein when the interface data is received at an agent device, the interface data causes the agent device to display an agent interface, and wherein the agent interface is associated with a set of executable functions corresponding to one or more available interactions between the agent device and a customer device; receiving a conversation activation request, wherein the conversation activation request initiates a communication session between the agent device and a customer device; facilitating the communication session between the agent device and the customer device, wherein the communication session includes control information, and wherein the communication session includes messaging information associated with a messaging service; receiving a transfer request, wherein the transfer request identifies a mobile agent device associated with the agent device, wherein the transfer request includes a request to enable the set of executable functions associated with the agent interface, through the mobile agent device; and transmitting the interface data, wherein transmitting the interface data is based upon the control information and the messaging information, and wherein when the interface data is received at the mobile agent device, the set of executable functions associated with the agent interface is available for execution at the mobile agent device.
 7. The system of claim 6, wherein when the interface data includes the control information, the control information causes execution of a function of the set of executable functions.
 8. The system of claim 6, wherein the control information includes an identifier that corresponds to a function of the set of executable functions, and wherein when the control information is received at the server, the identifier is used to identify and execute a function.
 9. The system of claim 6, wherein agent console information is transmitted to the mobile agent device using the messaging service, and wherein the agent console information enables the set of executable functions to be executed at the mobile agent device.
 10. The system of claim 6, wherein the operations further comprise: receiving the control information, wherein when the control information is received from the mobile agent device, determining a function of the set of executable functions for execution based on the control information, wherein determining the function includes extracting an identifier included in the control information, and wherein the identifier corresponds to the function.
 11. A computer-program product tangibly embodied in a non-transitory machine-readable storage medium, including instructions configured to cause a data processing apparatus to perform operations including: transmitting, by a server, interface data, wherein when the interface data is received at an agent device, the interface data causes the agent device to display an agent interface, and wherein the agent interface is associated with a set of executable functions corresponding to one or more available interactions between the agent device and a customer device; receiving a conversation activation request, wherein the conversation activation request initiates a communication session between the agent device and a customer device; facilitating the communication session between the agent device and the customer device, wherein the communication session includes control information, and wherein the communication session includes messaging information associated with a messaging service; receiving a transfer request, wherein the transfer request identifies a mobile agent device associated with the agent device, wherein the transfer request includes a request to enable the set of executable functions associated with the agent interface, through the mobile agent device; and transmitting the interface data, wherein transmitting the interface data is based upon the control information and the messaging information, and wherein when the interface data is received at the mobile agent device, the set of executable functions associated with the agent interface is available for execution at the mobile agent device.
 12. The computer-program product of claim 11, wherein when the interface data includes the control information, the control information causes execution of a function of the set of executable functions.
 13. The computer-program product of claim 11, wherein the control information includes an identifier that corresponds to a function of the set of executable functions, and wherein when the control information is received at the server, the identifier is used to identify and execute a function.
 14. The computer-program product of claim 11, wherein agent console information is transmitted to the mobile agent device using the messaging service, and wherein the agent console information enables the set of executable functions to be executed at the mobile agent device.
 15. The computer-program product of claim 11, wherein the operations further comprise: receiving the control information, wherein when the control information is received from the mobile agent device, determining a function of the set of executable functions for execution based on the control information, wherein determining the function includes extracting an identifier included in the control information, and wherein the identifier corresponds to the function. 